using System;
using System.Runtime.Serialization;


namespace Agron.Data.Contracts
{
    /// <summary>
    /// Defines the data contract for a member of a session.
    /// </summary>
    [Serializable]
    [DataContract(Namespace = "http://schemas.udlap.mx/Agron/SessionMember")]
    public class SessionMember : UserProfile
    {
        private bool _isOnline;
        private bool _isSessionOwner;
        private string _internetAddress;
        private string _localAddress;
        private string _penColorName;

        /// <summary>
        /// Initializes a new instance of the <see cref="SessionMember"/> class.
        /// </summary>
        public SessionMember() : base() { }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is online.
        /// </summary>
        /// <value><c>true</c> if this instance is online; otherwise, <c>false</c>.</value>
        [DataMember]
        public bool IsOnline { get { return this._isOnline; } set { this._isOnline = value; } }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is session owner.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance is session owner; otherwise, <c>false</c>.
        /// </value>
        [DataMember]
        public bool IsSessionOwner { get { return this._isSessionOwner; } set { this._isSessionOwner = value; } }

        /// <summary>
        /// Gets or sets the internet IP Address of the session-member.
        /// </summary>
        /// <value>A <see cref="string"/> containing the internet IP Address of the session-member.</value>
        [DataMember]
        public string InternetAddress { get { return this._internetAddress; } set { this._internetAddress = value; } }

        /// <summary>
        /// Gets or sets the local-network IP Address of the session-member.
        /// </summary>
        /// <value>A <see cref="string"/> containing the local-network IP Address of the session-member.</value>
        [DataMember]
        public string LocalAddress { get { return this._localAddress; } set { this._localAddress = value; } }

        /// <summary>
        /// Gets or sets the name of the pen color.
        /// </summary>
        /// <value>The name of the pen color.</value>
        [DataMember]
        public string PenColorName { get { return this._penColorName; } set { this._penColorName = value; } }
    }
}
